#ifndef MODERN_ICONS_H
#define MODERN_ICONS_H

#include "icon_design_specs.h"
#include <QObject>
#include <QIcon>
#include <functional>

/**
 * @brief 现代图标系统 - 基于统一设计规范的图标生成器
 *
 * 提供高质量的矢量图标生成，支持：
 * - 主题色彩自适应
 * - 多尺寸自动适配
 * - 高清显示支持
 * - 智能导出模式切换
 */
class ModernIcons : public QObject
{
    Q_OBJECT

public:
    enum ExportMode {
        SeparateMode,  // 分别导出：每个文件一个PDF
        MergedMode     // 合并导出：所有文件一个PDF
    };

    explicit ModernIcons(QObject* parent = nullptr);
    ~ModernIcons() = default;

    // 核心图标生成
    QIcon createImportIcon(const QColor& themeColor = QColor("#007AFF"));
    QIcon createExportIcon(ExportMode mode, const QColor& themeColor = QColor("#007AFF"));

    // 主题自适应图标
    QIcon createThemedImportIcon();
    QIcon createThemedExportIcon(ExportMode mode);

    // 多尺寸自适应图标
    QIcon createAdaptiveIcon(std::function<void(QPainter&, qreal, const QColor&)> drawFunc,
                           const QColor& themeColor = QColor("#007AFF"));

    // 导出模式管理
    void setExportMode(ExportMode mode) { m_exportMode = mode; }
    ExportMode exportMode() const { return m_exportMode; }
    void toggleExportMode() {
        m_exportMode = (m_exportMode == SeparateMode) ? MergedMode : SeparateMode;
        emit exportModeChanged(m_exportMode);
    }

    // 主题色彩管理
    void setThemeColor(const QColor& color) { m_themeColor = color; }
    QColor themeColor() const { return m_themeColor; }

    // 暗色主题支持
    void setDarkMode(bool dark) { m_isDarkMode = dark; }
    bool isDarkMode() const { return m_isDarkMode; }
    QColor getAdaptiveThemeColor() const;

    // 尺寸管理
    void setBaseSize(int size) { m_baseSize = size; }
    int baseSize() const { return m_baseSize; }

    // 工具方法
    static QString exportModeText(ExportMode mode);
    static QString exportModeDescription(ExportMode mode);
    static QIcon createIconVariant(const QIcon& baseIcon, const QColor& color, QIcon::Mode mode);

signals:
    void exportModeChanged(ExportMode mode);
    void themeColorChanged(const QColor& color);

private:
    // 基础绘制函数
    void drawImportIcon(QPainter& painter, qreal scale, const QColor& color);
    void drawSeparateExportIcon(QPainter& painter, qreal scale, const QColor& color);
    void drawMergedExportIcon(QPainter& painter, qreal scale, const QColor& color);

    // 辅助绘制函数
    void drawFileDocument(QPainter& painter, const QRectF& rect, const QColor& color, qreal scale);
    void drawPdfDocument(QPainter& painter, const QRectF& rect, const QColor& color, qreal scale);
    void drawArrow(QPainter& painter, const QPointF& start, const QPointF& end, const QColor& color, qreal scale);
    void drawConvergeArrows(QPainter& painter, const QPointF& center, const QColor& color, qreal scale);

    // 成员变量
    ExportMode m_exportMode;
    QColor m_themeColor;
    bool m_isDarkMode;
    int m_baseSize;
};

#endif // MODERN_ICONS_H